package rpc.common.enumeraion;

import lombok.AllArgsConstructor;
import lombok.Getter;
import rpc.packet.RpcRequest;
import rpc.packet.RpcResponse;

import java.util.HashMap;
import java.util.Map;

/**
 * 接收或者发送的对象类型
 */
@Getter
@AllArgsConstructor
public enum PackageType {

    REQUEST_PACK((byte) 0x00),
    RESPONSE_PACK((byte) 0x01);

    private static final Map<Byte, Class<?>> packageTypes = new HashMap<>();

    private final byte code;


    /**
     * 获取对应 id 的 class
     * @param id
     * @return
     */
    public static Class<?> getPackageType(byte id) {
        return packageTypes.get(id);
    }

    static {
        packageTypes.put(REQUEST_PACK.getCode(), RpcRequest.class);
        packageTypes.put(RESPONSE_PACK.getCode(), RpcResponse.class);
    }
}
